package com.wn.icloud.service;

import com.wn.icloud.domain.BaseTreeEntityDomain;

import java.io.Serializable;
import java.util.List;

/**
 * @author liguangcai
 * @date 2018/11/30 20:07
 */
public interface BaseTreeService<T extends BaseTreeEntityDomain<T>, ID extends Serializable> extends BaseService<T, ID> {

    /**
     * 获取根节点实体集合
     *
     * @return
     */
    List<T> getRoot();

    /**
     * 获取制定id的直接孩子实体集合；
     *
     * @param id
     * @return
     */
    List<T> getChildren(ID id);

    /**
     * 获取制定id的全部子孙实体集合；
     *
     * @param id
     * @return
     */
    List<T> getDescendants(ID id);


    /**
     * @param id
     * @return
     */
    List<T> getAncestors(ID id);

}
